一、简介
1.1 作用
专为 vue 开发 SPA 单页应用时所提供的插件,能够让我们可以使用前端路由控制组件的渲染,减少重复性的 HTTP 请求。
1.2 基本原理
普通的页面跳转都是由后端来控制的,我们可以修改浏览器地址栏的url,或者修改location.href值,向服务器发送请求切换页面。
如果我们仅仅修改url中的hash值,浏览器是不会向页面发出请求的。
- vue-router的运作原理就是利用hash的变化实现组件的动态切换,达到切换页面效果的目的
- vue-router内部使用了hash与H5两种方式
1.3 基本使用
1 | <div id="app"> |
1 | // 全局登陆组件 |
二、路由实例与路由对象
2.1 说明
- 配置了路由之后,在vue实例与组件身上会被注入两个对象$router与$route
- $router为new VueRouter()得到的实例,里面记录了路由配置信息,并提供了一些方法供我们调用
- $route为页面hash值解析后的一个对象,有点类似于node中
url.parser(req.url)
的返回结果,可以通过它拿到 URL# 后面的参数。
2.2 $route常用属性
- 注意:下面的属性都是对页面location.hash值进行的解析提取,不是location.href
- fullPath:完整路径,包含query与hash
- path:纯路径
- query:查询字符串解析后得到的对象
- params:路径参数解析后得到的对象
- name:当前路由配置的name属性
2.3 使用路由参数
1 | // 全局详情组件 |
三、跳转页面
3.1 标签跳转
如果要通过点击页面元素实现页面跳转可以使用router-link标签,router-link标签最终会被替换为普通的a标签,但router-link标签使用更灵活,会直接拼接到 # 后面,用原生a标签写的话<a href='#/login'></a>
要手动加一个 # 号。
写法1:
1 | <router-link to="/login?keyword=1122">演示</router-link> |
写法2:
1 | <router-link :to="{ path: '/login', query: { keyword: 1122 } }">演示</router-link> |
写法3:
1 | <router-link :to="{ name: 'go', query: { keyword: 1122 } }">演示</router-link> |
示例
1 | <div id="app"> |
1 | // 全局登陆组件 |
3.2 js 跳转
如果向通过 js 来实现页面跳转可以使用 $router.push 方法
写法1:
1 | this.$router.push('/login') |
写法2:
1 | this.$router.push({path:'/login', query:{aa:11}}) |
写法3:
1 | this.$router.push({name:'details', params:{id:1}, query:{aa:11}}) |
写法4:
1 | this.$route.go(-1) // 后退,1为前进 |
示例
1 | // 实例 |
3.3 重定向
1 | new VueRouter({ |
四、监听路由变化
1 | new Vue({ |
五、嵌套路由
5.1 说明
项目中有时候会出现组件嵌套组件的情况,这些子组件也要根据url进行动态切换,那么就需要嵌套配置
注意:嵌套配置时子路由path自动继承父路由path的path,配置时不要在前面加’/‘
5.2 示例
1 | let Compt1 = Vue.extend({ |